自行制作有關網路 IP 的批次檔交給使用者時,常常發生在者輸人時總是會與我們想的不一樣,不是多個.號或是輸入非數字等,造成批次檔出現意料外的狀況.
一直在找一個可以在命令中檢查 IP 格式是否正確的批次內容,但找到的不是多少有些缺陷就是寫法不夠精簡,為了這個問題思考好一段時間,想到一個較完美的又精簡的寫法分享給大家.
檢查範圍 0.0.0.0-255.255.255.255。
@Echo Off
Set /p IP=請輸入要檢查的IP位置:
For /f "delims=^. tokens=1-4" %%i in ('Echo %IP: =%^|Findstr /V "\<[0][0-9] \.[0\.][0-9] [^0-9\.] [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\. ^[0-9]*\.*[0-9]*\.*[0-9]*\.*$"') Do (
Set /A Reutrn="(%%i>>8)|(%%j>>8)|(%%k>>8)|(%%l>>8)"
Set IP=%%i.%%j.%%k.%%l
)
If "%Reutrn%" EQU "0" (Echo IP 位置正確:%IP%) Else (Echo IP 位置不正確:%IP%)
Pause
經測測試應該沒問題了,若發現問題還請指教以便完善。